package cn.px.dao.mapper.repair;

import cn.px.dao.config.MyMapper;
import cn.px.dao.dto.repair.RepairFormDTO;
import cn.px.dao.entity.repair.RepairForm;
import cn.px.dao.vo.repair.RepairFormVO;
import org.springframework.stereotype.Component;

import java.util.List;


/**
 * @Description 维修单 mapper
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
 */
@Component
public interface RepairFormMapper extends MyMapper<RepairForm> {
    /**
     * 分页查询
     *
     * @param dto
     * @return
     */
    List<RepairFormVO> selectPageList(RepairFormDTO dto);

    /**
     * 根据主键查询
     *
     * @param id
     * @return
     */
    RepairFormVO selectById(Object id);

    /**
     * 查询维修单号
     *
     * @param id
     * @return
     */
    String selectNoById(Object id);

    /**
     * 统计时间内的设备数量
     *
     * @param model ：
     * @return ：
     */
    int countDicitinctSbByTime(RepairFormDTO model);

    /**
     * 每月每台设备维修次数，维修费用，维修工时
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsByGroupBySb(RepairFormDTO model);


    /**
     * 每月维修次数，维修费用，维修工时（不依赖于设备）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsByGroupByMonth(RepairFormDTO model);

    /**
     * 每月维修次数，维修费用，维修工时（不依赖于设备）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsByGroupByErrorType(RepairFormDTO model);

    /**
     * 每月维修次数，维修费用，维修工时（不依赖于设备）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsByGroupByUser(RepairFormDTO model);

    /**
     * 指定月月维修次数，维修费用，维修工时（所有设备）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsResultSbGroupBySbMonth(RepairFormDTO model);

    /**
     * 指定月维修次数，维修费用，维修工时（所有异常类型）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsResultErrorTypeByGroupByErrorType(RepairFormDTO model);

    /**
     * 指定月维修次数，维修费用，维修工时（所有人）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsResultUserByGroupByUser(RepairFormDTO model);
}
